package main

import (
	"fmt"
)

//切片（可以理解为动态数组）
func main() {

	//演示切片的基本使用
	var intArr [5]int = [...]int{1, 22, 33, 66, 99}
	//声明/定义一个切片
	// slice := intArr[1:3]
	// 1 slice就是切片名
	// 2 intArr[1:3]表示slice引用到intArr这个数组
	// 3 引用intArr数组的起始下标为1，最后的下标为3 （但是不包含3）
	slice := intArr[1:3]
	fmt.Println("intArr = ", intArr)
	fmt.Println("slice 的元素是= ", slice)
	fmt.Println("slice 的元素个数 = ", len(slice))
	fmt.Println("slice 的容量 = ", cap(slice)) //切片的容量是可以动态变化的

	fmt.Printf("intArr[1]的地址=%p \n", &intArr[1])
	fmt.Printf("slice[0]的地址=%p slic[0]=%v \n", &slice[0], slice[0])
	slice[1] = 34 //因为slice存的是引用  所以这里改变数据后  原数组也会改变
	fmt.Println()
	fmt.Println()
	fmt.Println("intArr=", intArr)
	fmt.Println("slice 的元素是=", slice)
}
